PARSER_DIR := src/parser
LEXER := $(PARSER_DIR)/lexer.l
PARSER := $(PARSER_DIR)/parser.y

INC_PATH += $(PARSER_DIR)

LEXER_CXX := $(basename $(LEXER)).cc
LEXER_H := $(basename $(LEXER)).h
PARSER_CXX := $(basename $(PARSER)).cc
PARSER_H := $(basename $(PARSER)).h

SRCS += $(LEXER_CXX) $(PARSER_CXX)

PARSER_CLEAN_FILES := $(LEXER_CXX) $(LEXER_H) $(PARSER_CXX) $(PARSER_H)

FLEX_FLAGS := --header-file=$(LEXER_H)
BSION_FLAGS := --header=$(PARSER_H) -W -Wother -Wcounterexamples

$(PARSER_CXX) $(PARSER_H): $(PARSER) $(LEXER_CXX)
	@echo + bison $<
	@bison $(BSION_FLAGS) -o $@ $<

$(LEXER_CXX) $(LEXER_H): $(LEXER)
	@echo + flex $<
	@flex $(FLEX_FLAGS) -o $@ $<
